SkyOS Desktop

The desktop for SkyOS is stored in settings/desktop.dat, which is a serialized table (textutils.serialize()), and it's data structure goes as follows:

{
  { -- This is the first desktop layout, or the home screen. Each screen is a table in this layer.
    { -- This is Y level 1.
      { -- This is X 1, which is `desktop[1][1]`
        name = "Shell", -- Text to display under the icon.
        type = "app", -- Whether or not this is an app or folder.
        image = "graphics/app/shell.skimg", -- Image of the icon, located in "graphics/app"
        program = "rom/programs/shell.lua", -- Program to open when this is clicked.
      },
      { -- This is X 2, which is `desktop[1][2]`
        name = "Other",
        type = "folder",
        contents = { -- This is where the contents of the folder are. Folders only support a 3x3 arrangement of programs.
          { -- Y level 1 of the folder.
            { -- X 1, `desktop[1][2].contents[1][1]
              name = "Shell", -- Text to display under the icon.
              type = "app", -- Whether or not this is an app or folder. Folders can only contain apps.
              image = "graphics/app/shell.skimg", -- Image of the icon, located in "graphics/app"
              program = "rom/programs/shell.lua", -- Program to open when this is clicked.
            }
          }
        }
      }
    }
  }
}

There will be a basic interface for this in the sos api.